Stand-alone electronic cash registers including payment card readers and receipt printers have been used for years in stores, retail outlets and service outlets to facilitate the completion of cash, cheque, credit card or debit card transactions for the purchase of goods and/or services. With the advent of sophisticated and inexpensive computing equipment, input devices and secure communication networks, point-of-sale (POS) stations have become an increasingly popular alternative.
POS stations typically include a host device and a plurality of interchangeable peripherals connected to the host device. The host device and peripherals are easily integrated allowing the configuration of POS stations to be modified to meet changing needs. This has been another factor leading to their widespread acceptance. The host device is commonly in the form of a personal computer. The peripherals often include a keyboard, a display screen, a cash drawer, a printing device, a payment card reader and a barcode reader. In some cases, a touch-sensitive display screen is used instead of separate keyboard and display screen peripherals.
As is well known, the host device communicates with the peripherals and executes software to allow product and/or service transactions to be completed. When payment is effected using a debit or credit card, the host device establishes a connection to the appropriate financial institution over an information network so that approval for the transaction may be obtained. Upon completion of any transaction, the host device creates and transmits a print job to the printing device causing the printing device to generate a transaction receipt and a possibly signing receipt, if payment is made using a credit card.
In larger stores, retail outlets and service outlets, POS stations are typically linked via a local area network and communicate with a backend computing device that maintains a database for transaction, inventory, accounting, sales, tax, etc. information. Transaction data received by each of the POS stations is conveyed to the backend computing device for storage in the database allowing all transaction data to be stored in a common location. Collectively storing all transaction data in one common location allows retailers to track, account for and maintain inventory, collected taxes and pricing information. Also, by linking the POS stations, updates relating to sales on products and/or services, tax, etc. can be communicated to each POS station over the local area network avoiding the need to update the POS stations one at a time.
Printing devices commonly used in POS stations comprise a printer having a slot for receiving a separate printer interface that controls communications between the host device and the printer. The printer interface is primarily selected based on the communication protocol used by the host device thereby to ensure hardware compatibility between the host device and the printer. For example, hardware compatibility may be achieved by installing a serial, parallel, Ethernet or USB interface into the printer slot. As the printer interface can be readily changed, the printer is not limited for use with any particular communication protocol but rather can be used in many different communication protocol environments simply by replacing the printer interface. The printer interface may also be selected to enhance functionality of the printer such as by adding supplemental fonts or by emulating one or more other printer models.
The printer interface and the printer are typically preloaded with firmware although the printing device may receive updated printer firmware from the host device to replace or patch the existing printer firmware. Updated printer firmware received from the host device by the printer interface is in turn conveyed to the printer for storage therein.
The printer firmware typically includes a boot file, a main firmware file and one or more font files. The boot file is executed by the printer during initialization to place the printer into a ready operating state. The main firmware and font files are executed during normal operation of the printer to allow the printer to respond to print commands received from the host device via the printer interface so that appropriate transaction receipts can be printed. The font file typically contains glyph or shape data for each character in the font file character sets.
NAND memory is commonly employed in the printer interface and printer to store the firmware, print data stream character codes and commands and other information. NAND memory is divided into blocks with each block including a plurality of sectors. Each sector typically accommodates 512 bytes of data and 16 bytes of memory management code such as for example error detection code (EDC)/error correction code (ECC). Unfortunately, NAND memory, like all memory, is not 100% reliable. When writing data blocks to blocks of NAND memory, it is possible that the data blocks are written incorrectly, referred to as sector write failures. As a result, it is necessary to verify written data blocks to confirm that the writes are successful. Also, blocks of data written to NAND memory while initially correct may become erroneous over time due to aging or due to disturbances resulting from writes to adjacent blocks of NAND memory.
To deal with memory problems, techniques to detect and correct memory errors have been considered. For example, U.S. Pat. No. 6,041,001 to Estakhri discloses a method of increasing data reliability of a flash memory device using “on the fly” detection and correction of data errors and bad memory blocks. An error correction code (ECC) is stored along with the data at write time. Memory units are checked and corrected when a read of the data is corrected. Compatibility with existing memory products and formats is not compromised through use of a permissible variation in the Solid State Floppy Disk Card (SSFDC) standard in order to achieve both increased error correction capability and sufficient compatibility.
U.S. Pat. Nos. 6,523,132 and 6,684,345, to Harari et al. disclose increasing the reliability of flash EEPROM memory in order to bring it into line with the level of reliability of typical magnetic disk storage. A defect mapping table is used to re-correct for hard errors whenever they occur by re-mapping the memory cell-by-cell where necessary. Hard errors are detected by their failure to program or erase correctly and, upon read, are detected by making use of an ECC. Once an error is identified, defect mapping is applied, with the aim to preserve sequential addressing. If a failure is detected during writing to memory, a backup is immediately created.
U.S. Patent Application Publication No. 2002/0069381 to Jeong et al. discloses a non-volatile semiconductor memory device with a fail bit detecting scheme that detects the number of fail bits in a memory block in order to determine the usability of the memory block. In a special test mode, test data is stored and compared to read test data. The number of failed bits determined from the comparison is used to provide a measure of the reliability and therefore, usability of the memory device.
U.S. Patent Application Publication No. 2003/0167372 to Lee discloses a semiconductor memory device with a flexible redundancy scheme and automatic bad block mapping. An address storage circuit contains the addresses of bad memory blocks. The address storage circuit receives the address of a block of memory required to be read or written to, and automatically switches address selection between a normal and redundant block if the received address corresponds to a bad block of memory.
U.S. Patent Application Publication No. 2004/0015771 to Lasser et al. discloses a method for correcting errors in both data and corresponding data control portions of non-volatile memory using a shared error code. The method takes into account the fact that control information may also contain errors and seeks to increase the usability of low-reliability memory. A shared code is used, in some cases, to lengthen access time to control information.
U.S. Patent Application Publication No. 2004/0042331 to Ikehashi et al. discloses a semiconductor memory device with a test mode. Test time is reduced during manufacture of the semiconductor memory device by eliminating a “fuse cutting” step from the test procedure.
Although the above references disclose memory correcting techniques, improved methods of managing printer memory are desired. It is therefore an object of the present invention to provide a novel method of correcting NAND memory blocks and to a printing device employing the method.